package com.wn.demo02;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;
import java.util.function.Predicate;

/**
 * @author yellow Docter
 * @date 2024 -06-17
 * @desc
 *   Predicate 断定型接口 T  boolean确定类型为T的对象是否满足某约束，
 *      并返回boolean 值。包含方法boolean test(T t);
 *
 */
public class Demo05 {

    public static void main(String[] args) {


        Predicate<Integer> predicate = (x)->{
            return x>10;
        };
        System.out.println(predicate.test(5));
        System.out.println(predicate.test(20));

        // 筛选、过滤的使用场景

        //有一个list的数组 筛选偶数
        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
        List<Integer> filter = filter(list, (x) -> x % 2 == 0);
        System.out.println(filter);

    }

    public static List<Integer> filter(List<Integer> list,Predicate<Integer> p){

        List<Integer> result = new ArrayList<>();

        for (Integer value : list) {    //进行遍历
            if(p.test(value)){   //筛选规则
                result.add(value); //符合规则添加到新的 集合中
            }
        }
        return result;
    }


}

